# 第一阶段：构建阶段
FROM golang:1.23-alpine AS builder

# 设置环境变量
#ENV CGO_ENABLED=0 \
#    GOOS=linux \
#    GOARCH=amd64
# 1. 换成国内源
ENV CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64 \
    GOPROXY=https://goproxy.cn,direct \
    GO111MODULE=on

# 设置工作目录
WORKDIR /app

# 先复制依赖管理文件
COPY go.mod go.sum ./

# 下载依赖
RUN go mod download

# 复制全部源代码
COPY . .

# 构建Go二进制文件
#RUN go build -o /app .
# 构建应用程序
RUN cd go-server/cmd && \
    CGO_ENABLED=0 GOOS=linux go build -o /app/dubbo-go-server


# 第二阶段：运行阶段
FROM alpine:3.21 AS final

## 安装必要的运行时依赖
#RUN apk --no-cache add ca-certificates

# 从构建阶段复制编译好的二进制文件
# 设置工作目录
WORKDIR /app

# 从构建阶段复制可执行文件
COPY --from=builder /app/dubbo-go-server .

# 暴露服务端口
EXPOSE 20000

# 启动服务
CMD ["./dubbo-go-server"]
